昨天介紹了會受到繼承限制的密封類別
sealed interface Error
sealed class IOError(): Error
class FileReadError(val file: File): IOError()
class DatabaseError(val source: DataSource): IOError()
object RuntimeError : Error
今天則是要介紹巢狀類別以及內部類別
首先談談巢狀類別(Nested classes)
class Outer {
private val bar: Int = 1
class Nested {
fun foo() = 2
}
}
val demo = Outer.Nested().foo()
由於巢狀類別沒辦法存取外部類別的屬性
若我們需要存取的話,則需要加上inner
也就是所謂的內部類別(Inner classes)
class Outer {
private val bar: Int = 1
inner class Inner {
fun foo() = bar
}
}
val demo = Outer().Inner().foo()